import org.junit.Test;

        import static junit.framework.Assert.assertEquals;
        import static org.junit.Assert.assertFalse;
        import static org.junit.Assert.assertTrue;

public class EuroTest {
    @Test
    public void assert10EuroIsEqualTo10Euro(){
        assertEquals(new Euro(10), new Euro(10));
    }

    @Test
    public void assert10EuroIsNotEqualToNull(){
        assertFalse(new Euro(10).equals(null));
    }

    @Test
    public void assert10EuroIsNotEqualToObject(){
        assertFalse(new Euro(10).equals(new Object()));
    }

    @Test
    public void assert10EuroIsNotEqualTo11Euros(){
        assertFalse(new Euro(10).equals(new Euro(11)));
    }

    @Test
    public void assert10EuroEqualTo5Plus5Euro() {
        assertEquals(new Euro(10), (new Euro(5).plus(new Euro(5))));
    }

    @Test
    public void assert10EuroEquals5EuroPlus2EuroPlus3Euro() {
        assertEquals(new Euro(10), (new Euro(5).plus(new Euro(2).plus(new Euro(3)))));
    }

    @Test
    public void assert10EuroNotEqual5EuroPlus2Euro() {
        assertFalse(new Euro(10).equals(new Euro(5).plus(new Euro(2))));
    }

    @Test
    public void assert10EurosNotEqualTo10Dollars() {
        assertFalse(new Euro(10).equals(new Dollar(10)));
    }

    @Test
    public void assert10EuroEqualTo13Point5Dollar() {
        assertTrue(new Euro(10).equals(new Dollar(13.5)));
    }

    @Test
    public void assert13Point5DollarsEqualTo10Euro() {
        assertTrue(new Dollar(13.5).equals(new Euro(10)));
    }

    @Test
    public void assert13Point5DollarsPlus10EuroEquals20Euro(){
        assertTrue(new Euro(20).equals(new Dollar(13.5).plus(new Euro(10))));
    }

    @Test
    public void assert27DollarsEquals10EuroPlus10Euro(){
        assertTrue(new Dollar(27).equals(new Euro(10).plus(new Euro(10))));
    }
}
